package me.youline.dataServer.service.socialAction.listener;

import javax.annotation.Resource;

import me.youline.dataServer.service.socialAction.event.SocialActionEvent;
import me.youline.dataServer.service.socialAction.handler.SocialActionEventHandler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

/**
 * 默认的社交行为事件监听器，此类主要将事件处理具象化。
 * 1.事件处理，一般而言这个步骤会做一些涉及事务操作
 * 2.事件处理结束后所需要执行的业务，一般而言这个步骤会执行一些消息通知等，
 * 该listener并不负责具体实现，而是交由社交行为通知消息处理器来完成上述两个步骤。这两个步骤所执行的内容一般不在同一个事务。
 * 不同的handler可以处理不同类型的行为消息
 * 
 * @author linhan
 *
 */
@Component
public class DefaultSocialActionEventListener implements
		SocialActionEventListener {
	
	private static Logger logger = LoggerFactory.getLogger(DefaultSocialActionEventListener.class);
	
	@Resource(name="socialActionEventHandlerComposite")
	private SocialActionEventHandler eventHandler;

	@Override
	public void handleEvent(SocialActionEvent event) {
		try {
			if(!eventHandler.isNeedHandle(event)){
				return;
			}
			eventHandler.processSocialActionEvent(event);
			eventHandler.finishSocialActionEvent(event);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
		}
	}

}
